package com.hzw.saas.api.product;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hzw.saas.api.product.dto.BalanceOrderDto;
import com.hzw.saas.api.product.dto.BalanceOrderInfoDto;
import com.hzw.saas.common.config.util.PageParam;

/**
 * 充值订单表 服务类
 *
 * @author zzl
 * @since 01/28/2021
 */
public interface IBalanceOrderService {

    /**
     * 根据订单id获取订单详情
     *
     * @param orderId 订单ID
     * @return 订单信息
     */
    BalanceOrderDto get(String orderId);

    BalanceOrderInfoDto getInfo(String orderId);

    /**
     * 根据条件查询订单列表
     *
     * @param pageParam 分页
     * @param cnd       查询条件
     * @return 订单列表
     */
    IPage<BalanceOrderDto> list(PageParam pageParam, BalanceOrderDto cnd);

    IPage<BalanceOrderInfoDto> listInfo(PageParam pageParam, BalanceOrderDto cnd);

    /**
     * 创建订单
     *
     * @param balanceOrderDto 订单信息，包含用户ID
     * @return 订单信息，包含生成的订单ID
     */
    BalanceOrderDto add(BalanceOrderDto balanceOrderDto);

    /**
     * 更新订单信息
     *
     * @param balanceOrderDto 待更新的订单信息，无需更新的字段设为null
     * @return 更新成功true/失败false
     */
    boolean update(BalanceOrderDto balanceOrderDto);

    /**
     *  创建充值线下订单
     * @param balanceOrderDto
     * @return
     */
    BalanceOrderDto createOfflineBalanceOrder(BalanceOrderDto balanceOrderDto);

    /**
     * 充值订单确认
     * @param orderId
     * @return
     */
    void balanceOrderConfirm(String orderId, String userId) throws Exception;

}
